<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        li {
            list-style: none;
        }

        .wrap {
            /* padding: 10px; */
        }

        .list {
            background-color: grey;
            padding: 20px 0;
        }

        .list li {
            height: 40px;
            line-height: 40px;
            border: 1px dashed #333;
            margin-top: 10px;
            text-indent: 10px;
            background-color: orange;
        }

        .list span,
        .list p {
            display: block;
            height: 40px;
            line-height: 40px;
            border: 1px dashed #333;
            margin-top: 10px;
            text-indent: 10px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div class="wrap">
        <div class="button-groups">
            <button class="add">新增</button>
        </div>
        <ul class="list">
            <span>span01</span>
            <span>span02</span>
            <li id="first">01</li>
            <li>02</li>
            <li class="mid">03</li>
            <li>04</li>
            <li>05</li>
            <li class="last">06</li>
            <p>p01</p>
            <p>p02</p>
        </ul>
    </div>
</body>
<script>

    var add = document.querySelector(".add");
    var ul = document.getElementsByClassName("list")[0];

    // 获取ul中的li 
    var liList = ul.getElementsByTagName("li");


    // 事件委托: 
    // 利用事件冒泡的原理,将子(代)元素的事件,委托给父元素,由父元素代为执行


    // 事件委托的实现步骤:
    // 1. 给父元素绑定相同类型的事件 -> (同种类型的事件才能冒泡)
    // 2. 通过事件源获取触发事件元素
    // 3. 判断触发事件的元素(事件源)是否是委托事件的子元素
    //    a. 如果元素类型不同 -> 可以通过标签名区分

    ul.onclick = function (e) {  // this -> 绑定事件的元素(ul)
        var e = e || window.event;
        var target = e.target;
        // console.log("ul被点击", target);   // 事件源 -> 触发事件的元素(ul及其子元素)

        if (target == this) { // 自己
            console.log("点击了自己", target);
        } else {  // 子内容
            // console.log("点击了子内容", target);
            if (target.tagName.toLowerCase() == "span") {
                console.log("点击了子内容:span", target);
            } else if (target.tagName.toLowerCase() == "p") {
                console.log("点击了子内容:p", target);
            } else if (target.tagName.toLowerCase() == "li") {
                console.log("点击了子内容:li", target);

                // 点击li -> 打印li的内容和下标(相对于6个li的下标)

                var index = Array.from(liList).indexOf(target)
                console.log(target.textContent, index);

            }
        }

    }










    add.onclick = function () {
        // 如何创建一个li
        var li = document.createElement("li"); // 创建一个元素节点(li)

        // 被创建的li -> 正常的元素节点 -> 修改内容 添加属性 修改样式 绑定事件
        li.innerText = "我是被新增的li";
        li.setAttribute("class", "newLi");

        var list = ["red", "orange", "yellow", "green", "pink", "#6ff"];
        var index = Math.floor(Math.random() * list.length);
        li.style.backgroundColor = list[index];

        ul.appendChild(li);   // 追加父元素

        console.log("传统获取", liList);

    }


</script>

</html>